Sometimes you want to ignore a topic. But you can't be fucked to open it up, scroll to the end, and use the (half-hidden) dropdown.
Well now you don't have to! On your /unread list, you can have a big honking red IGNORE button (with confirmation).
Uzzascript:
// ==UserScript==
// @name tdwtf - ignore on topic list
// @namespace Lorne
// @include https://what.thedailywtf.com/*
// @version 1
// @grant all
// @runat document-end
// ==/UserScript==
var $ = unsafeWindow.jQuery;
function changeWatching(tid, type, callback){
callback = callback || function(){}; //callback's optional i guess
var window = unsafeWindow;
window.socket.emit('topics.changeWatching',
{
tid: tid,
type: type
},
callback);
}
function watchTopic(tid, callback){
changeWatching(tid, 'follow', callback);
}
function normalTopic(tid, callback){
changeWatching(tid, 'unfollow', callback);
}
function ignoreTopic(tid, callback){
changeWatching(tid, 'ignore', callback);
}
function topicChangeWatchCallback(a,b,c)
{
console.log("done ", a, b, c);
}
$(document).ready(function()
{
var $ = unsafeWindow.jQuery;
$(window).on('action:topics.loaded', function(event, data)
{
$button = $("<a href='#' class='ignore'>IGNORE</a>");
console.log("topics loaded", event, data);
$("ul.topic-list>li").each(function(){$(this).append($button.clone())});
});
$(document).on("click", ".topic-list .ignore", function(e)
{
console.log("click");
var tid = $(this).parents("[component='category/topic']:first").attr("data-tid")
if(confirm("Are you sure you want to ignore this topic? " + tid ))
{
ignoreTopic(tid, topicChangeWatchCallback);
}
return false;
});
});
Cascading Shitty Style:
ul.topic-list .ignore
{
border-width:2px !important;
border-color: #551111 !important;
border-style:dashed;
border-radius:5px;
position:absolute;
right:0px;
bottom:0px;
background-color:#aa0505 !important;
color:white !important;
padding:0.5em 1em;
cursor: pointer;
}
Next version will remove the li from the list, once NodeBB actually puts information in the callback.
topics.changeWatching doesn't include callback arguments? · Issue #4797 · NodeBB/NodeBB
window.socket.emit('topics.changeWatching', { tid: tid, type: type }, topicChangeWatchCallback); Calls: function topicChangeWatchCallback(a,b,c) { console.log("done ", a, b, c); }...